package client;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.testng.AssertJUnit;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import usecases.GestionJoueur;
import domaine.Joueur;
import domaine.Partie;


public class TestNG_GestionJoueur {
	private static GestionJoueur gj;
	
	private String pseudo="test";
	private String password="test";
	private Partie part;
	private String pseudo1="Alex";
	private String password1="alex";
	private int age=21;
	
	@BeforeClass
	public static void setUpBeforeClass() {
		try {
			Context jndi = new InitialContext();
			gj = (GestionJoueur) jndi.lookup("ejb:/ZeldaVoloEar/ZeldaVoloEJB/GestionJoueurImpl!usecases.GestionJoueur");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	

	@Test
	public void testConnexionExistant(){
		gj.inscrire(pseudo, password, 13);
		AssertJUnit.assertNotNull(gj.connexion(pseudo, password));
	}
	@Test
	public void testConnexionPseudoOkMpFalse(){
		gj.inscrire(pseudo, password, 12);
		AssertJUnit.assertNull(gj.connexion(pseudo, "mauvais"));
	}
	@Test
	public void testConnexionPseudoFalseMpOk(){
		gj.inscrire(pseudo, password, 12);
		AssertJUnit.assertNull(gj.connexion("mauvais", password));
	}
	@Test(groups="1")
	public void testInscriptionOk(){
		AssertJUnit.assertNotNull(gj.inscrire(pseudo1, password1,age));
	}
	@Test(dependsOnGroups="1")
	public void testInscriptionExistant(){
		gj.inscrire(pseudo1, password1,age);
		AssertJUnit.assertNull(gj.inscrire(pseudo1, password1,age));
	}
	@Test(dependsOnGroups="1")
	public void rechercherJoueurOk(){
		Joueur j = gj.inscrire(pseudo, password,age);
		AssertJUnit.assertNotNull(gj.rechercherJoueur(j.getId()));
	}
	@Test(dependsOnGroups="1")
	public void rechercherJoueurNOk(){
		AssertJUnit.assertNull(gj.rechercherJoueur(999));
	}
	@AfterMethod
	public void execApresChaqueMethode(){
		gj.clear();
	}
	
}
